package main

// IPC（Inter-Process Communication，进程间通信）Namespace
//linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的.
//而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD（加州大学伯克利分校的伯克利软件发布中心）
//在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充，形成了“system V IPC”，
//通信进程局限在单个计算机内；后者则跳过了该限制，形成了基于套接口（socket）的进程间通信机制。Linux则把两者继承了下来.
//简单来说 System V 用于单个计算机 socket 用于多机互联 变种的System V 也支持socket

/*
	#查看现有的ipc message queue
	ipcs -q
	#创建一个message queue
	ipcmk -Q
 */

import (
	"os/exec"
	"syscall"
	"os"
	"log"
)

func main(){

	// := 直接赋值，不用声明变量，go可以进行类型推断
	cmd := exec.Command("sh")

	// &符号的作用是取变量的地址 *是取变量的值
	cmd.SysProcAttr = &syscall.SysProcAttr{
		Cloneflags:syscall.CLONE_NEWUTS | syscall.CLONE_NEWIPC ,
	}

	cmd.Stdin = os.Stdin
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr

	if err := cmd.Run(); err != nil {
		log.Fatal(err)
	}



}




